//
//  NSDate+Extension.swift
//  Demo
//
//  Created by apple on 15/10/8.
//  Copyright © 2015年 小码哥. All rights reserved.
//

import UIKit

extension NSDate
{
    class func dateWithStr(dateStr: String) -> NSDate?
    {
        // 2.创建时间格式化工具类
        let formatter = NSDateFormatter()
        // 3.设置时间格式
        formatter.dateFormat = "EEE MM dd HH:mm:ss Z yyyy"
        // 4.设置时区(如果是真机一定要设置, 否则会出现未知问题)
        formatter.locale = NSLocale(localeIdentifier: "en")
        // 5.将字符串转换为NSDate
        return formatter.dateFromString(dateStr)
    }
    
    // 分类中是可以添加计算型的属性的, 因为它不需要分配存储空间
    var dateDesc: String{
        // 1.创建日历类
        let calendar = NSCalendar.currentCalendar()
        
        // 2.处理时间
        if calendar.isDateInToday(self)
        {
            // 获取两个时间的差值(单位是秒)
            let res = Int(NSDate().timeIntervalSinceDate(self))
//            print(NSDate())
//            print(self)
//            print(res)
            
            // 处理今天
            if res < 60
            {
                return "刚刚"
            }else if res < 60 * 60
            {
                return "\(res/60)分钟前"
            }else
            {
                return "\(res / (60 * 60))小时前"
            }
            
        }
        
        var formatterStr = "HH:mm"
        if calendar.isDateInYesterday(self)
        {
            // 处理昨天
            formatterStr = "昨天:" + formatterStr
        }else
        {
            // 处理一年以内
            // 比较两个时间之间的差值
            let comps = calendar.components(NSCalendarUnit.Year, fromDate: self, toDate: NSDate(), options:[])
            // 判断是否是今年
            if comps.year == 0
            {
                // 处理今年
                formatterStr = "MM-dd " + formatterStr
            }else
            {
                // 处理更早时间
                formatterStr = "yyyy-MM-dd " + formatterStr
            }
        }
        
        // 2.创建时间格式化工具类
        let formatter2 = NSDateFormatter()
        // 3.设置时间格式
        formatter2.dateFormat = formatterStr
        // 4.设置时区(如果是真机一定要设置, 否则会出现未知问题)
        formatter2.locale = NSLocale(localeIdentifier: "en")
        // 5.将NSDate转换为字符串
        return  formatter2.stringFromDate(self)
        
    }
}